package homeworkplus.day03;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 实现时间的计算: 要求用户输入身份证号，若格式有误，要求其重新输入。然后根据身份证号码输出20岁生日
 * 所在周的周三的日期。
 * 例如:
 * 出生日期:1992-07-15。
 * 20岁生日:2012-07-15
 * 当周的周三为:2012-07-18
 *
 * @author Xiloe
 */
public class Test05 {
    public static void main(String[] args) throws ParseException {
        String regex = "^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
        Scanner scanner = new Scanner(System.in);
        String id = "";
        while (true) {
            System.out.print("请输入身份证号码：");
            id = scanner.nextLine();
            if (!id.matches(regex)) {
                System.out.println("请输入正确的身份证号码！");
            } else {
                break;
            }
        }
        //获取出生日期  7-14位  下标6-13
        String birDay = id.substring(6, 14);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        Date birDate = sdf.parse(birDay);
        //创建Calendar
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(birDate);
        calendar.add(Calendar.YEAR, 20);
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        birDate = calendar.getTime();
        System.out.println("20岁生日为：" + sdf1.format(birDate));
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
        Date thisWens = calendar.getTime();
        System.out.println("当前周的周三是：" + sdf1.format(thisWens));

    }
//012345678901234567
//429004199801154038
}
